package Song.Han.demo03;

import java.util.HashMap;
import java.util.Map;

/*
* java.util.Map<k,v>集合
* Map集合的特点：
*   1.Map集合是一个双列集合，一个元素包含两个值
*   2.Map集合中的元素，key不允许重复，value允许重复
*   3.Map集合中的元素，key和value一一对应
*
* java.util.HashMap<k,v>集合 implements Map<k,v>接口
* HashMap集合的特点：
*   1.底层是哈希表：查询快
*   2.是一个无序集合
*
* java.util.LinkedHashMap<k,v>集合 extents HashMap<k,v>集合
* LinkedHashMap<k,v>集合的特点：
*   1.底层是哈希表+链表（保证迭代顺序）
*   2.是一个有序的集合
* */
public class Demo01Map {
    public static void main(String[] args) {
        //show01();
        //show02();
        //show03();
        show04();
    }

    //map.containsKey()方法
    private static void show04() {
        Map<String,Integer> map = new HashMap<>();
        map.put("赵丽颖",18);
        map.put("林志玲",19);
        map.put("迪丽热巴",17);
        System.out.println(map);
        //判断集合中是否包含指定的key
        boolean b1 = map.containsKey("赵丽颖");
        System.out.println(b1);
        boolean b2 = map.containsKey("杨颖");
        System.out.println(b2);
    }

    //map.get()方法
    private static void show03() {
        Map<String,Integer> map = new HashMap<>();
        map.put("赵丽颖",18);
        map.put("林志玲",19);
        map.put("迪丽热巴",17);
        System.out.println(map);

        Integer v1 = map.get("杨颖");
        System.out.println(v1);//null
        Integer v2 = map.get("赵丽颖");
        System.out.println(v2);//18

    }

    //map.remove()方法
    private static void show02() {
        Map<String,Integer> map = new HashMap<>();
        map.put("赵丽颖",18);
        map.put("林志玲",19);
        map.put("迪丽热巴",17);
        System.out.println(map);

        Integer v1 = map.remove("林志玲");
        System.out.println("v1:"+v1);//19
        //int v2 = map.remove("林志颖");//自动拆箱，但返回值为null会报异常
        //System.out.println("v2:"+v2);//null
        System.out.println(map);
    }

    //map.put()方法
    private static void show01() {
        Map<String,String> map = new HashMap();
        String  v1 =map.put("李晨","范冰冰1");
        System.out.println(v1);//null
        String  v2 =map.put("李晨","范冰冰2");
        System.out.println(v2);//范冰冰1,返回被替换的值
        System.out.println(map);
    }
}
